import http from "./request";
import config from "./config";

function checkIDCard(idcode) {
    // 函数参数必须是字符串，因为二代身份证号码是十八位，而在javascript中，十八位的数值会超出计算范围，造成不精确的结果，导致最后两位和计算的值不一致，从而该函数出现错误。
// 详情查看javascript的数值范围
    // 加权因子
    var weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    // 校验码
    var check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];

    var code = idcode + "";
    var last = idcode[17];//最后一位

    var seventeen = code.substring(0, 17);

    // ISO 7064:1983.MOD 11-2
    // 判断最后一位校验码是否正确
    var arr = seventeen.split("");
    var len = arr.length;
    var num = 0;
    for (var i = 0; i < len; i++) {
        num = num + arr[i] * weight_factor[i];
    }

    // 获取余数
    var resisue = num % 11;
    var last_no = check_code[resisue];

    // 格式的正则
    // 正则思路
    /*
    第一位不可能是0
    第二位到第六位可以是0-9
    第七位到第十位是年份，所以七八位为19或者20
    十一位和十二位是月份，这两位是01-12之间的数值
    十三位和十四位是日期，是从01-31之间的数值
    十五，十六，十七都是数字0-9
    十八位可能是数字0-9，也可能是X
    */
    var idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;

    // 判断格式是否正确
    var format = idcard_patter.test(idcode);

    // 返回验证结果，校验码和格式同时正确才算是合法的身份证号码
    return last === last_no && format ? true : false;
}

/**
 * @description 验证手机号码
 * @param {string} phone 对应的状态值
 * @returns {Object} 返回的obj，status：状态Boolean，true正确。msg：验证信息
 * @author 毛振
 */
function validatePhone(phone) {
    var reg = /^[1][1,2,3,4,5,6,7,8,9][0-9]{9}$/;
    if (!reg.test(phone)) {
        return false
    }
    return true

}

function saveImage(url) {
    return new Promise((resolve, reject) => {
        uni.showLoading({
            title: '保存中'
        });

        // #ifdef MP-ALIPAY
        uni.saveImageToPhotosAlbum({
            filePath: this.photoInfo.filePath,
            success: () => {
                uni.showToast({
                    icon: 'success',
                    title: '已保存至手机',
                    duration: 2000,
                });
                uni.hideLoading();
            },
        });
        // #endif

        // #ifdef MP-WEIXIN
        http.request({
            url: '/photo/get_base64_by_id/?id=2',
            type: 'get',
            loadText: '保存中'
        }).then(result => {
            console.log(result)
            var imgSrc = result.data.base64;//base64编码
            this.srcImg = imgSrc;
            var save = wx.getFileSystemManager();
            var number = Math.random();
            save.writeFile({
                filePath: wx.env.USER_DATA_PATH + '/pic-' + number + '.png',
                data: imgSrc,
                encoding: 'base64',
                success: res => {
                    wx.saveImageToPhotosAlbum({
                        filePath: wx.env.USER_DATA_PATH + '/pic-' + number + '.png',
                        success: function (res) {
                            wx.showToast({
                                title: '保存成功',
                            });
                            resolve(true)
                        },
                        fail: function (err) {
                            console.log(err);
                            reject(false)
                        }
                    });
                    console.log(res);
                }, fail: err => {
                    reject(false)
                    console.log('write error: ' + err);
                }
            });
        });
        // #endif
    })

}

function saveAllImage(id, type) {
    return new Promise((resolve, reject) => {
        // #ifdef MP-ALIPAY
        uni.saveImageToPhotosAlbum({
            filePath: this.photoInfo.filePath,
            success: () => {
                uni.showToast({
                    icon: 'success',
                    title: '已保存至手机',
                    duration: 2000,
                });
                uni.hideLoading();
            },
        });
        // #endif

        // #ifdef MP-WEIXIN
        http.request({
            url: '/api/h5/photo/download?id=' + id + '&layout=' + type,
            type: 'GET',
            noMock: true,
            noLoading: true,
        }).then(result => {
            console.log(result)
            var imgSrc = result.data.base64;//base64编码
            this.srcImg = imgSrc;
            var save = wx.getFileSystemManager();
            var number = Math.random();
            save.writeFile({
                filePath: wx.env.USER_DATA_PATH + '/pic-' + number + '.png',
                data: imgSrc,
                encoding: 'base64',
                success: res => {
                    wx.saveImageToPhotosAlbum({
                        filePath: wx.env.USER_DATA_PATH + '/pic-' + number + '.png',
                        success: function (res) {
                            resolve(true)
                        },
                        fail: function (err) {
                            console.log(err);
                            reject(false)
                        }
                    });
                    console.log(res);
                }, fail: err => {
                    reject(false)
                    console.log('write error: ' + err);
                }
            });
        });
        // #endif
    })

}

function checkEmail(email) {
    var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
    if (!reg.test(email)) {
        return false
    }
    return true
}

function orderStatus(value) {
    var status = '';
    // 0：待支付，1：支付待确认，2：支付成功，3：待发货，4：待收货，5:已完成，-1：取消支付，-2 支付超时失败
    switch (value) {
        case 0:
            status = '待支付';
            break;
        case 1:
            status = '支付待确认';
            break;
        case 2:
            status = '支付成功';
            break;
        case 3:
            status = '待发货';
            break;
        case 4:
            status = '待收货';
            break;
        case 5:
            status = '已完成';
            break;
        case -1:
            status = '已取消';
            break;
        case -2:
            status = '支付超时失败';
            break;
    }
    return status;
}

function hidePhone(phone) {
    var pho = /(\d{3})\d*(\d{4})/
    return phone.replace(pho, '$1****$2');
}

export default {
    saveImage,
    validatePhone,
    checkIDCard,
    saveAllImage,
    checkEmail,
    hidePhone,
    orderStatus
}
